package es.deusto.herotactics.ingameandroid;

import android.graphics.Canvas;

/**
 * Clase para gestionar el hilo para refrescar la pantalla. Siempre que se vaya a 
 * dibujar en pantalla, habrá que hacerlo desde este hilo
 * 
 * @author ibai
 *
 */
public class HiloMapa extends Thread {
	private boolean continuar = false;
	private PantallaAndroid pantalla;
	private Object o = new Object();
//	private int fps = 25; //Tal vez haya que ponerlo si el rendimiento baja con los bitmaps
//	private int tiempoEspera = 1000/fps;
	
	public HiloMapa (PantallaAndroid pantalla) {
		this.pantalla = pantalla;
	}
	
	public void setContinuar(boolean continuar) {
		synchronized (o) {
			this.continuar = continuar;
		}
	}
	
	public boolean getContinuar() {
		return this.continuar;
	}
	
	@Override
	public void run() {
		int i = 3;
		Canvas c;
		do {
			c = null;
			try {
                c = pantalla.getHolder().lockCanvas(null);
                synchronized (pantalla.getHolder()) {
                	pantalla.onDraw(c);
                }
            } finally {
                // do this in a finally so that if an exception is thrown
                // during the above, we don't leave the Surface in an
                // inconsistent state
                if (c != null) {
                	pantalla.getHolder().unlockCanvasAndPost(c);
                }
            }
            /*
             * Hace i refrescos antes de finalizar el hilo para solucionar el fallo de
             * dibujado al levantar el dedo durante el movimiento en CPUs lentas
             */
            if (!continuar) {
            	i--;
            }
		}while (i>0);
	}
}
